package cn.tedu.charging.order.timer;

import cn.tedu.charging.common.pojo.po.ChargingBillExceptionPO;
import cn.tedu.charging.common.pojo.po.ChargingBillSuccessPO;
import cn.tedu.charging.order.repository.ExceptionBillRepo;
import cn.tedu.charging.order.repository.SuccessBillRepo;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.sql.Date;

@Component
@Slf4j
public class OrderTimerJob {
    @Autowired
    private SuccessBillRepo successBillRepo;
    @Autowired
    private ExceptionBillRepo exceptionBillRepo;
    /**
     * 准备一个定时任务
     */

    @XxlJob("order-check-result")
    public void orderTimerJob() {
        log.info("订单结果检查定时任务开始执行...");
        // 1. 拿到任务中传递的参数billId orderNo
        String billId = XxlJobContext.getXxlJobContext().getJobParam();
        // 2. 读取successPO，读取到/没读取到（fail订单）
        ChargingBillSuccessPO successPO = successBillRepo.findByBillId(billId);
        if(successPO != null){
            log.debug("订单存在");
            // 3. successPO status 是否有值，是否等于1
            Integer billStatus = successPO.getBillStatus();
            // 3.1 测试逻辑（假设现在正在充电的出现异常）：有值且值=1 修改订单状态为3，创建异常订单
            if(billStatus !=null && billStatus == 1){
                log.debug("当前订单未能正常结束");
                successBillRepo.updateStatus(billId,3);
                ChargingBillExceptionPO exceptionPO = new ChargingBillExceptionPO();
                exceptionPO.setBillId(billId);
                exceptionPO.setCreateTime(new Date(System.currentTimeMillis()));
                exceptionBillRepo.save(exceptionPO);
            }
            // 3.2 没有值，或者值不等于1，定时任务结束
        }
    }
}
